ANDROID: GKI: net: add vendor hooks net qos for gki purpose

Add vendor hooks to support net qos policy feature:

1.android_rvh_tcp_rcv_spurious_retrans
With this hook we could trace the ACK path through the segments which
are spuriously retransmitted by sender.

Bug: 351960112
Bug: 424394849

Change-Id: I739cef428f4a43999d99393a205b3d53a1eb52da
Signed-off-by: Jyu Jiang <jyu.jiang@vivo.corp-partner.google.com>
diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
index 9991a41..0e4d6a6 100644
--- a/drivers/android/vendor_hooks.c
+++ b/drivers/android/vendor_hooks.c
@@ -102,6 +102,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_udpv6_recvmsg);
 EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_tcp_select_window);
 EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_inet_sock_create);
 EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_inet_sock_release);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_tcp_rcv_spurious_retrans);
 EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tcp_rtt_estimator);
 EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_udp_enqueue_schedule_skb);
 EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_build_skb_around);
diff --git a/include/trace/hooks/net.h b/include/trace/hooks/net.h
index 28e4b31..e32b24e 100644
--- a/include/trace/hooks/net.h
+++ b/include/trace/hooks/net.h
@@ -51,6 +51,8 @@ DECLARE_RESTRICTED_HOOK(android_rvh_inet_sock_create,
 	TP_PROTO(struct sock *sk), TP_ARGS(sk), 1);
 DECLARE_RESTRICTED_HOOK(android_rvh_inet_sock_release,
 	TP_PROTO(struct sock *sk), TP_ARGS(sk), 1);
+DECLARE_RESTRICTED_HOOK(android_rvh_tcp_rcv_spurious_retrans,
+	TP_PROTO(struct sock *sk), TP_ARGS(sk), 1);
 DECLARE_HOOK(android_vh_tcp_rtt_estimator,
 	TP_PROTO(struct sock *sk, long mrtt_us), TP_ARGS(sk, mrtt_us));
 DECLARE_HOOK(android_vh_udp_enqueue_schedule_skb,
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index 2461b69..81d293a 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -4562,6 +4562,8 @@ static void tcp_rcv_spurious_retrans(struct sock *sk, const struct sk_buff *skb)
 	 * The receiver remembers and reflects via DSACKs. Leverage the
 	 * DSACK state and change the txhash to re-route speculatively.
 	 */
+	 trace_android_rvh_tcp_rcv_spurious_retrans(sk);
+
 	if (TCP_SKB_CB(skb)->seq == tcp_sk(sk)->duplicate_sack[0].start_seq &&
 	    sk_rethink_txhash(sk))
 		NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPDUPLICATEDATAREHASH);